<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>HelpMojo xref</title>
<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../apidocs/com/googlecode/maven/licensevalidator/HelpMojo.html">View Javadoc</a></div><pre>

<a class="jxr_linenumber" name="1" href="#1">1</a>   <strong class="jxr_keyword">package</strong> com.googlecode.maven.licensevalidator;
<a class="jxr_linenumber" name="2" href="#2">2</a>   
<a class="jxr_linenumber" name="3" href="#3">3</a>   <strong class="jxr_keyword">import</strong> java.util.ArrayList;
<a class="jxr_linenumber" name="4" href="#4">4</a>   <strong class="jxr_keyword">import</strong> java.util.Iterator;
<a class="jxr_linenumber" name="5" href="#5">5</a>   <strong class="jxr_keyword">import</strong> java.util.List;
<a class="jxr_linenumber" name="6" href="#6">6</a>   
<a class="jxr_linenumber" name="7" href="#7">7</a>   <strong class="jxr_keyword">import</strong> org.apache.maven.plugin.AbstractMojo;
<a class="jxr_linenumber" name="8" href="#8">8</a>   <strong class="jxr_keyword">import</strong> org.apache.maven.plugin.MojoExecutionException;
<a class="jxr_linenumber" name="9" href="#9">9</a>   
<a class="jxr_linenumber" name="10" href="#10">10</a>  <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="11" href="#11">11</a>  <em class="jxr_javadoccomment"> * Display help information on maven-license-validator-plugin.&lt;br/&gt; Call &lt;pre&gt;  mvn license-validator:help -Ddetail=true -Dgoal=&amp;lt;goal-name&amp;gt;&lt;/pre&gt; to display parameter details.</em>
<a class="jxr_linenumber" name="12" href="#12">12</a>  <em class="jxr_javadoccomment"> *</em>
<a class="jxr_linenumber" name="13" href="#13">13</a>  <em class="jxr_javadoccomment"> * @version generated on Tue Jul 12 16:45:04 BST 2011</em>
<a class="jxr_linenumber" name="14" href="#14">14</a>  <em class="jxr_javadoccomment"> * @author org.apache.maven.tools.plugin.generator.PluginHelpGenerator (version 2.4.3)</em>
<a class="jxr_linenumber" name="15" href="#15">15</a>  <em class="jxr_javadoccomment"> * @goal help</em>
<a class="jxr_linenumber" name="16" href="#16">16</a>  <em class="jxr_javadoccomment"> * @requiresProject false</em>
<a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../com/googlecode/maven/licensevalidator/HelpMojo.html">HelpMojo</a>
<a class="jxr_linenumber" name="19" href="#19">19</a>      <strong class="jxr_keyword">extends</strong> AbstractMojo
<a class="jxr_linenumber" name="20" href="#20">20</a>  {
<a class="jxr_linenumber" name="21" href="#21">21</a>      <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="22" href="#22">22</a>  <em class="jxr_javadoccomment">     * If &lt;code&gt;true&lt;/code&gt;, display all settable properties for each goal.</em>
<a class="jxr_linenumber" name="23" href="#23">23</a>  <em class="jxr_javadoccomment">     * </em>
<a class="jxr_linenumber" name="24" href="#24">24</a>  <em class="jxr_javadoccomment">     * @parameter expression="${detail}" default-value="false"</em>
<a class="jxr_linenumber" name="25" href="#25">25</a>  <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="26" href="#26">26</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> detail;
<a class="jxr_linenumber" name="27" href="#27">27</a>  
<a class="jxr_linenumber" name="28" href="#28">28</a>      <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="29" href="#29">29</a>  <em class="jxr_javadoccomment">     * The name of the goal for which to show help. If unspecified, all goals will be displayed.</em>
<a class="jxr_linenumber" name="30" href="#30">30</a>  <em class="jxr_javadoccomment">     * </em>
<a class="jxr_linenumber" name="31" href="#31">31</a>  <em class="jxr_javadoccomment">     * @parameter expression="${goal}"</em>
<a class="jxr_linenumber" name="32" href="#32">32</a>  <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="33" href="#33">33</a>      <strong class="jxr_keyword">private</strong> java.lang.String goal;
<a class="jxr_linenumber" name="34" href="#34">34</a>  
<a class="jxr_linenumber" name="35" href="#35">35</a>      <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="36" href="#36">36</a>  <em class="jxr_javadoccomment">     * The maximum length of a display line, should be positive.</em>
<a class="jxr_linenumber" name="37" href="#37">37</a>  <em class="jxr_javadoccomment">     * </em>
<a class="jxr_linenumber" name="38" href="#38">38</a>  <em class="jxr_javadoccomment">     * @parameter expression="${lineLength}" default-value="80"</em>
<a class="jxr_linenumber" name="39" href="#39">39</a>  <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="40" href="#40">40</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> lineLength;
<a class="jxr_linenumber" name="41" href="#41">41</a>  
<a class="jxr_linenumber" name="42" href="#42">42</a>      <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="43" href="#43">43</a>  <em class="jxr_javadoccomment">     * The number of spaces per indentation level, should be positive.</em>
<a class="jxr_linenumber" name="44" href="#44">44</a>  <em class="jxr_javadoccomment">     * </em>
<a class="jxr_linenumber" name="45" href="#45">45</a>  <em class="jxr_javadoccomment">     * @parameter expression="${indentSize}" default-value="2"</em>
<a class="jxr_linenumber" name="46" href="#46">46</a>  <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="47" href="#47">47</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> indentSize;
<a class="jxr_linenumber" name="48" href="#48">48</a>  
<a class="jxr_linenumber" name="49" href="#49">49</a>  
<a class="jxr_linenumber" name="50" href="#50">50</a>      <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> {@inheritDoc} */</em>
<a class="jxr_linenumber" name="51" href="#51">51</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> execute()
<a class="jxr_linenumber" name="52" href="#52">52</a>          <strong class="jxr_keyword">throws</strong> MojoExecutionException
<a class="jxr_linenumber" name="53" href="#53">53</a>      {
<a class="jxr_linenumber" name="54" href="#54">54</a>          <strong class="jxr_keyword">if</strong> ( lineLength &lt;= 0 )
<a class="jxr_linenumber" name="55" href="#55">55</a>          {
<a class="jxr_linenumber" name="56" href="#56">56</a>              getLog().warn( <span class="jxr_string">"The parameter 'lineLength' should be positive, using '80' as default."</span> );
<a class="jxr_linenumber" name="57" href="#57">57</a>              lineLength = 80;
<a class="jxr_linenumber" name="58" href="#58">58</a>          }
<a class="jxr_linenumber" name="59" href="#59">59</a>          <strong class="jxr_keyword">if</strong> ( indentSize &lt;= 0 )
<a class="jxr_linenumber" name="60" href="#60">60</a>          {
<a class="jxr_linenumber" name="61" href="#61">61</a>              getLog().warn( <span class="jxr_string">"The parameter 'indentSize' should be positive, using '2' as default."</span> );
<a class="jxr_linenumber" name="62" href="#62">62</a>              indentSize = 2;
<a class="jxr_linenumber" name="63" href="#63">63</a>          }
<a class="jxr_linenumber" name="64" href="#64">64</a>  
<a class="jxr_linenumber" name="65" href="#65">65</a>          StringBuffer sb = <strong class="jxr_keyword">new</strong> StringBuffer();
<a class="jxr_linenumber" name="66" href="#66">66</a>  
<a class="jxr_linenumber" name="67" href="#67">67</a>          append( sb, <span class="jxr_string">"com.googlecode.maven-license-validator-plugin:maven-license-validator-plugin:0.4"</span>, 0 );
<a class="jxr_linenumber" name="68" href="#68">68</a>          append( sb, <span class="jxr_string">""</span>, 0 );
<a class="jxr_linenumber" name="69" href="#69">69</a>  
<a class="jxr_linenumber" name="70" href="#70">70</a>          append( sb, <span class="jxr_string">"maven-license-validator-plugin 0.4"</span>, 0 );
<a class="jxr_linenumber" name="71" href="#71">71</a>          append( sb, <span class="jxr_string">"Maven plugin for validating license use in (transitive) dependencies"</span>, 1 );
<a class="jxr_linenumber" name="72" href="#72">72</a>          append( sb, <span class="jxr_string">""</span>, 0 );
<a class="jxr_linenumber" name="73" href="#73">73</a>  
<a class="jxr_linenumber" name="74" href="#74">74</a>          <strong class="jxr_keyword">if</strong> ( goal == <strong class="jxr_keyword">null</strong> || goal.length() &lt;= 0 )
<a class="jxr_linenumber" name="75" href="#75">75</a>          {
<a class="jxr_linenumber" name="76" href="#76">76</a>              append( sb, <span class="jxr_string">"This plugin has 2 goals:"</span>, 0 );
<a class="jxr_linenumber" name="77" href="#77">77</a>              append( sb, <span class="jxr_string">""</span>, 0 );
<a class="jxr_linenumber" name="78" href="#78">78</a>          }
<a class="jxr_linenumber" name="79" href="#79">79</a>  
<a class="jxr_linenumber" name="80" href="#80">80</a>          <strong class="jxr_keyword">if</strong> ( goal == <strong class="jxr_keyword">null</strong> || goal.length() &lt;= 0 || <span class="jxr_string">"help"</span>.equals( goal ) )
<a class="jxr_linenumber" name="81" href="#81">81</a>          {
<a class="jxr_linenumber" name="82" href="#82">82</a>              append( sb, <span class="jxr_string">"license-validator:help"</span>, 0 );
<a class="jxr_linenumber" name="83" href="#83">83</a>              append( sb, <span class="jxr_string">"Display help information on maven-license-validator-plugin.\nCall\n\u00a0\u00a0mvn\u00a0license-validator:help\u00a0-Ddetail=true\u00a0-Dgoal=&lt;goal-name&gt;\nto display parameter details."</span>, 1 );
<a class="jxr_linenumber" name="84" href="#84">84</a>              append( sb, <span class="jxr_string">""</span>, 0 );
<a class="jxr_linenumber" name="85" href="#85">85</a>              <strong class="jxr_keyword">if</strong> ( detail )
<a class="jxr_linenumber" name="86" href="#86">86</a>              {
<a class="jxr_linenumber" name="87" href="#87">87</a>                  append( sb, <span class="jxr_string">"Available parameters:"</span>, 1 );
<a class="jxr_linenumber" name="88" href="#88">88</a>                  append( sb, <span class="jxr_string">""</span>, 0 );
<a class="jxr_linenumber" name="89" href="#89">89</a>  
<a class="jxr_linenumber" name="90" href="#90">90</a>                  append( sb, <span class="jxr_string">"detail (Default: false)"</span>, 2 );
<a class="jxr_linenumber" name="91" href="#91">91</a>                  append( sb, <span class="jxr_string">"If true, display all settable properties for each goal."</span>, 3 );
<a class="jxr_linenumber" name="92" href="#92">92</a>                  append( sb, <span class="jxr_string">""</span>, 0 );
<a class="jxr_linenumber" name="93" href="#93">93</a>  
<a class="jxr_linenumber" name="94" href="#94">94</a>                  append( sb, <span class="jxr_string">"goal"</span>, 2 );
<a class="jxr_linenumber" name="95" href="#95">95</a>                  append( sb, <span class="jxr_string">"The name of the goal for which to show help. If unspecified, all goals will be displayed."</span>, 3 );
<a class="jxr_linenumber" name="96" href="#96">96</a>                  append( sb, <span class="jxr_string">""</span>, 0 );
<a class="jxr_linenumber" name="97" href="#97">97</a>  
<a class="jxr_linenumber" name="98" href="#98">98</a>                  append( sb, <span class="jxr_string">"lineLength (Default: 80)"</span>, 2 );
<a class="jxr_linenumber" name="99" href="#99">99</a>                  append( sb, <span class="jxr_string">"The maximum length of a display line, should be positive."</span>, 3 );
<a class="jxr_linenumber" name="100" href="#100">100</a>                 append( sb, <span class="jxr_string">""</span>, 0 );
<a class="jxr_linenumber" name="101" href="#101">101</a> 
<a class="jxr_linenumber" name="102" href="#102">102</a>                 append( sb, <span class="jxr_string">"indentSize (Default: 2)"</span>, 2 );
<a class="jxr_linenumber" name="103" href="#103">103</a>                 append( sb, <span class="jxr_string">"The number of spaces per indentation level, should be positive."</span>, 3 );
<a class="jxr_linenumber" name="104" href="#104">104</a>                 append( sb, <span class="jxr_string">""</span>, 0 );
<a class="jxr_linenumber" name="105" href="#105">105</a>             }
<a class="jxr_linenumber" name="106" href="#106">106</a>         }
<a class="jxr_linenumber" name="107" href="#107">107</a> 
<a class="jxr_linenumber" name="108" href="#108">108</a>         <strong class="jxr_keyword">if</strong> ( goal == <strong class="jxr_keyword">null</strong> || goal.length() &lt;= 0 || <span class="jxr_string">"validate-licenses"</span>.equals( goal ) )
<a class="jxr_linenumber" name="109" href="#109">109</a>         {
<a class="jxr_linenumber" name="110" href="#110">110</a>             append( sb, <span class="jxr_string">"license-validator:validate-licenses"</span>, 0 );
<a class="jxr_linenumber" name="111" href="#111">111</a>             append( sb, <span class="jxr_string">"Maven goal for downloading the license files of all the current project\'s dependencies."</span>, 1 );
<a class="jxr_linenumber" name="112" href="#112">112</a>             append( sb, <span class="jxr_string">""</span>, 0 );
<a class="jxr_linenumber" name="113" href="#113">113</a>             <strong class="jxr_keyword">if</strong> ( detail )
<a class="jxr_linenumber" name="114" href="#114">114</a>             {
<a class="jxr_linenumber" name="115" href="#115">115</a>                 append( sb, <span class="jxr_string">"Available parameters:"</span>, 1 );
<a class="jxr_linenumber" name="116" href="#116">116</a>                 append( sb, <span class="jxr_string">""</span>, 0 );
<a class="jxr_linenumber" name="117" href="#117">117</a> 
<a class="jxr_linenumber" name="118" href="#118">118</a>                 append( sb, <span class="jxr_string">"allowUnrecognised (Default: false)"</span>, 2 );
<a class="jxr_linenumber" name="119" href="#119">119</a>                 append( sb, <span class="jxr_string">"Whether to treat unmatched license dependencies as allowed or banned - true for allowed. Default is false"</span>, 3 );
<a class="jxr_linenumber" name="120" href="#120">120</a>                 append( sb, <span class="jxr_string">""</span>, 0 );
<a class="jxr_linenumber" name="121" href="#121">121</a> 
<a class="jxr_linenumber" name="122" href="#122">122</a>                 append( sb, <span class="jxr_string">"allowedLicenses"</span>, 2 );
<a class="jxr_linenumber" name="123" href="#123">123</a>                 append( sb, <span class="jxr_string">"List of banned licenses - any entry can be a RegExp match string instead of a specific license name. Banned licenses are overriden by allowed licenses, so if a license of a dependency matches both banned and allowed, then it is deemd to be allowed"</span>, 3 );
<a class="jxr_linenumber" name="124" href="#124">124</a>                 append( sb, <span class="jxr_string">""</span>, 0 );
<a class="jxr_linenumber" name="125" href="#125">125</a> 
<a class="jxr_linenumber" name="126" href="#126">126</a>                 append( sb, <span class="jxr_string">"allowedUnlicensed"</span>, 2 );
<a class="jxr_linenumber" name="127" href="#127">127</a>                 append( sb, <span class="jxr_string">"List of artifacts which are allowed as long as they do not assert a license, of the form groupId:artifactId, or a RegExp match string instead of a specific dependency name (which will be matched against the artifacts by forming their groupId and artifactId as above. Bypassed artifacts automatically pass the license check, as long as they have no licenses specified - if they specify a license, they have to meet the normal rules."</span>, 3 );
<a class="jxr_linenumber" name="128" href="#128">128</a>                 append( sb, <span class="jxr_string">""</span>, 0 );
<a class="jxr_linenumber" name="129" href="#129">129</a> 
<a class="jxr_linenumber" name="130" href="#130">130</a>                 append( sb, <span class="jxr_string">"bannedLicenses"</span>, 2 );
<a class="jxr_linenumber" name="131" href="#131">131</a>                 append( sb, <span class="jxr_string">"List of banned licenses - any entry can be a RegExp match string instead of a specific license name. Banned licenses are overriden by allowed licenses, so if a license of a dependency matches both banned and allowed, then it is deemd to be allowed"</span>, 3 );
<a class="jxr_linenumber" name="132" href="#132">132</a>                 append( sb, <span class="jxr_string">""</span>, 0 );
<a class="jxr_linenumber" name="133" href="#133">133</a> 
<a class="jxr_linenumber" name="134" href="#134">134</a>                 append( sb, <span class="jxr_string">"failFast (Default: true)"</span>, 2 );
<a class="jxr_linenumber" name="135" href="#135">135</a>                 append( sb, <span class="jxr_string">"Whether to bomb out on the first license error or report all errors before exiting"</span>, 3 );
<a class="jxr_linenumber" name="136" href="#136">136</a>                 append( sb, <span class="jxr_string">""</span>, 0 );
<a class="jxr_linenumber" name="137" href="#137">137</a> 
<a class="jxr_linenumber" name="138" href="#138">138</a>                 append( sb, <span class="jxr_string">"includeTransitiveDependencies (Default: true)"</span>, 2 );
<a class="jxr_linenumber" name="139" href="#139">139</a>                 append( sb, <span class="jxr_string">"Include transitive dependencies when downloading license files."</span>, 3 );
<a class="jxr_linenumber" name="140" href="#140">140</a>                 append( sb, <span class="jxr_string">""</span>, 0 );
<a class="jxr_linenumber" name="141" href="#141">141</a> 
<a class="jxr_linenumber" name="142" href="#142">142</a>                 append( sb, <span class="jxr_string">"verbose (Default: false)"</span>, 2 );
<a class="jxr_linenumber" name="143" href="#143">143</a>                 append( sb, <span class="jxr_string">"Whether to provide verbose information on what\'s going on"</span>, 3 );
<a class="jxr_linenumber" name="144" href="#144">144</a>                 append( sb, <span class="jxr_string">""</span>, 0 );
<a class="jxr_linenumber" name="145" href="#145">145</a>             }
<a class="jxr_linenumber" name="146" href="#146">146</a>         }
<a class="jxr_linenumber" name="147" href="#147">147</a> 
<a class="jxr_linenumber" name="148" href="#148">148</a>         <strong class="jxr_keyword">if</strong> ( getLog().isInfoEnabled() )
<a class="jxr_linenumber" name="149" href="#149">149</a>         {
<a class="jxr_linenumber" name="150" href="#150">150</a>             getLog().info( sb.toString() );
<a class="jxr_linenumber" name="151" href="#151">151</a>         }
<a class="jxr_linenumber" name="152" href="#152">152</a>     }
<a class="jxr_linenumber" name="153" href="#153">153</a> 
<a class="jxr_linenumber" name="154" href="#154">154</a>     <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="155" href="#155">155</a> <em class="jxr_javadoccomment">     * &lt;p&gt;Repeat a String &lt;code&gt;n&lt;/code&gt; times to form a new string.&lt;/p&gt;</em>
<a class="jxr_linenumber" name="156" href="#156">156</a> <em class="jxr_javadoccomment">     *</em>
<a class="jxr_linenumber" name="157" href="#157">157</a> <em class="jxr_javadoccomment">     * @param str String to repeat</em>
<a class="jxr_linenumber" name="158" href="#158">158</a> <em class="jxr_javadoccomment">     * @param repeat number of times to repeat str</em>
<a class="jxr_linenumber" name="159" href="#159">159</a> <em class="jxr_javadoccomment">     * @return String with repeated String</em>
<a class="jxr_linenumber" name="160" href="#160">160</a> <em class="jxr_javadoccomment">     * @throws NegativeArraySizeException if &lt;code&gt;repeat &lt; 0&lt;/code&gt;</em>
<a class="jxr_linenumber" name="161" href="#161">161</a> <em class="jxr_javadoccomment">     * @throws NullPointerException if str is &lt;code&gt;null&lt;/code&gt;</em>
<a class="jxr_linenumber" name="162" href="#162">162</a> <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="163" href="#163">163</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> String repeat( String str, <strong class="jxr_keyword">int</strong> repeat )
<a class="jxr_linenumber" name="164" href="#164">164</a>     {
<a class="jxr_linenumber" name="165" href="#165">165</a>         StringBuffer buffer = <strong class="jxr_keyword">new</strong> StringBuffer( repeat * str.length() );
<a class="jxr_linenumber" name="166" href="#166">166</a> 
<a class="jxr_linenumber" name="167" href="#167">167</a>         <strong class="jxr_keyword">for</strong> ( <strong class="jxr_keyword">int</strong> i = 0; i &lt; repeat; i++ )
<a class="jxr_linenumber" name="168" href="#168">168</a>         {
<a class="jxr_linenumber" name="169" href="#169">169</a>             buffer.append( str );
<a class="jxr_linenumber" name="170" href="#170">170</a>         }
<a class="jxr_linenumber" name="171" href="#171">171</a> 
<a class="jxr_linenumber" name="172" href="#172">172</a>         <strong class="jxr_keyword">return</strong> buffer.toString();
<a class="jxr_linenumber" name="173" href="#173">173</a>     }
<a class="jxr_linenumber" name="174" href="#174">174</a> 
<a class="jxr_linenumber" name="175" href="#175">175</a>     <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> </em>
<a class="jxr_linenumber" name="176" href="#176">176</a> <em class="jxr_javadoccomment">     * Append a description to the buffer by respecting the indentSize and lineLength parameters.</em>
<a class="jxr_linenumber" name="177" href="#177">177</a> <em class="jxr_javadoccomment">     * &lt;b&gt;Note&lt;/b&gt;: The last character is always a new line.</em>
<a class="jxr_linenumber" name="178" href="#178">178</a> <em class="jxr_javadoccomment">     * </em>
<a class="jxr_linenumber" name="179" href="#179">179</a> <em class="jxr_javadoccomment">     * @param sb The buffer to append the description, not &lt;code&gt;null&lt;/code&gt;.</em>
<a class="jxr_linenumber" name="180" href="#180">180</a> <em class="jxr_javadoccomment">     * @param description The description, not &lt;code&gt;null&lt;/code&gt;.</em>
<a class="jxr_linenumber" name="181" href="#181">181</a> <em class="jxr_javadoccomment">     * @param indent The base indentation level of each line, must not be negative.</em>
<a class="jxr_linenumber" name="182" href="#182">182</a> <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="183" href="#183">183</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> append( StringBuffer sb, String description, <strong class="jxr_keyword">int</strong> indent )
<a class="jxr_linenumber" name="184" href="#184">184</a>     {
<a class="jxr_linenumber" name="185" href="#185">185</a>         <strong class="jxr_keyword">for</strong> ( Iterator it = toLines( description, indent, indentSize, lineLength ).iterator(); it.hasNext(); )
<a class="jxr_linenumber" name="186" href="#186">186</a>         {
<a class="jxr_linenumber" name="187" href="#187">187</a>             sb.append( it.next().toString() ).append( '\n' );
<a class="jxr_linenumber" name="188" href="#188">188</a>         }
<a class="jxr_linenumber" name="189" href="#189">189</a>     }
<a class="jxr_linenumber" name="190" href="#190">190</a> 
<a class="jxr_linenumber" name="191" href="#191">191</a>     <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> </em>
<a class="jxr_linenumber" name="192" href="#192">192</a> <em class="jxr_javadoccomment">     * Splits the specified text into lines of convenient display length.</em>
<a class="jxr_linenumber" name="193" href="#193">193</a> <em class="jxr_javadoccomment">     * </em>
<a class="jxr_linenumber" name="194" href="#194">194</a> <em class="jxr_javadoccomment">     * @param text The text to split into lines, must not be &lt;code&gt;null&lt;/code&gt;.</em>
<a class="jxr_linenumber" name="195" href="#195">195</a> <em class="jxr_javadoccomment">     * @param indent The base indentation level of each line, must not be negative.</em>
<a class="jxr_linenumber" name="196" href="#196">196</a> <em class="jxr_javadoccomment">     * @param indentSize The size of each indentation, must not be negative.</em>
<a class="jxr_linenumber" name="197" href="#197">197</a> <em class="jxr_javadoccomment">     * @param lineLength The length of the line, must not be negative.</em>
<a class="jxr_linenumber" name="198" href="#198">198</a> <em class="jxr_javadoccomment">     * @return The sequence of display lines, never &lt;code&gt;null&lt;/code&gt;.</em>
<a class="jxr_linenumber" name="199" href="#199">199</a> <em class="jxr_javadoccomment">     * @throws NegativeArraySizeException if &lt;code&gt;indent &lt; 0&lt;/code&gt;</em>
<a class="jxr_linenumber" name="200" href="#200">200</a> <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="201" href="#201">201</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> List toLines( String text, <strong class="jxr_keyword">int</strong> indent, <strong class="jxr_keyword">int</strong> indentSize, <strong class="jxr_keyword">int</strong> lineLength )
<a class="jxr_linenumber" name="202" href="#202">202</a>     {
<a class="jxr_linenumber" name="203" href="#203">203</a>         List lines = <strong class="jxr_keyword">new</strong> ArrayList();
<a class="jxr_linenumber" name="204" href="#204">204</a> 
<a class="jxr_linenumber" name="205" href="#205">205</a>         String ind = repeat( <span class="jxr_string">"\t"</span>, indent );
<a class="jxr_linenumber" name="206" href="#206">206</a>         String[] plainLines = text.split( <span class="jxr_string">"(\r\n)|(\r)|(\n)"</span> );
<a class="jxr_linenumber" name="207" href="#207">207</a>         <strong class="jxr_keyword">for</strong> ( <strong class="jxr_keyword">int</strong> i = 0; i &lt; plainLines.length; i++ )
<a class="jxr_linenumber" name="208" href="#208">208</a>         {
<a class="jxr_linenumber" name="209" href="#209">209</a>             toLines( lines, ind + plainLines[i], indentSize, lineLength );
<a class="jxr_linenumber" name="210" href="#210">210</a>         }
<a class="jxr_linenumber" name="211" href="#211">211</a> 
<a class="jxr_linenumber" name="212" href="#212">212</a>         <strong class="jxr_keyword">return</strong> lines;
<a class="jxr_linenumber" name="213" href="#213">213</a>     }
<a class="jxr_linenumber" name="214" href="#214">214</a> 
<a class="jxr_linenumber" name="215" href="#215">215</a>     <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> </em>
<a class="jxr_linenumber" name="216" href="#216">216</a> <em class="jxr_javadoccomment">     * Adds the specified line to the output sequence, performing line wrapping if necessary.</em>
<a class="jxr_linenumber" name="217" href="#217">217</a> <em class="jxr_javadoccomment">     * </em>
<a class="jxr_linenumber" name="218" href="#218">218</a> <em class="jxr_javadoccomment">     * @param lines The sequence of display lines, must not be &lt;code&gt;null&lt;/code&gt;.</em>
<a class="jxr_linenumber" name="219" href="#219">219</a> <em class="jxr_javadoccomment">     * @param line The line to add, must not be &lt;code&gt;null&lt;/code&gt;.</em>
<a class="jxr_linenumber" name="220" href="#220">220</a> <em class="jxr_javadoccomment">     * @param indentSize The size of each indentation, must not be negative.</em>
<a class="jxr_linenumber" name="221" href="#221">221</a> <em class="jxr_javadoccomment">     * @param lineLength The length of the line, must not be negative.</em>
<a class="jxr_linenumber" name="222" href="#222">222</a> <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="223" href="#223">223</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> toLines( List lines, String line, <strong class="jxr_keyword">int</strong> indentSize, <strong class="jxr_keyword">int</strong> lineLength )
<a class="jxr_linenumber" name="224" href="#224">224</a>     {
<a class="jxr_linenumber" name="225" href="#225">225</a>         <strong class="jxr_keyword">int</strong> lineIndent = getIndentLevel( line );
<a class="jxr_linenumber" name="226" href="#226">226</a>         StringBuffer buf = <strong class="jxr_keyword">new</strong> StringBuffer( 256 );
<a class="jxr_linenumber" name="227" href="#227">227</a>         String[] tokens = line.split( <span class="jxr_string">" +"</span> );
<a class="jxr_linenumber" name="228" href="#228">228</a>         <strong class="jxr_keyword">for</strong> ( <strong class="jxr_keyword">int</strong> i = 0; i &lt; tokens.length; i++ )
<a class="jxr_linenumber" name="229" href="#229">229</a>         {
<a class="jxr_linenumber" name="230" href="#230">230</a>             String token = tokens[i];
<a class="jxr_linenumber" name="231" href="#231">231</a>             <strong class="jxr_keyword">if</strong> ( i &gt; 0 )
<a class="jxr_linenumber" name="232" href="#232">232</a>             {
<a class="jxr_linenumber" name="233" href="#233">233</a>                 <strong class="jxr_keyword">if</strong> ( buf.length() + token.length() &gt;= lineLength )
<a class="jxr_linenumber" name="234" href="#234">234</a>                 {
<a class="jxr_linenumber" name="235" href="#235">235</a>                     lines.add( buf.toString() );
<a class="jxr_linenumber" name="236" href="#236">236</a>                     buf.setLength( 0 );
<a class="jxr_linenumber" name="237" href="#237">237</a>                     buf.append( repeat( <span class="jxr_string">" "</span>, lineIndent * indentSize ) );
<a class="jxr_linenumber" name="238" href="#238">238</a>                 }
<a class="jxr_linenumber" name="239" href="#239">239</a>                 <strong class="jxr_keyword">else</strong>
<a class="jxr_linenumber" name="240" href="#240">240</a>                 {
<a class="jxr_linenumber" name="241" href="#241">241</a>                     buf.append( ' ' );
<a class="jxr_linenumber" name="242" href="#242">242</a>                 }
<a class="jxr_linenumber" name="243" href="#243">243</a>             }
<a class="jxr_linenumber" name="244" href="#244">244</a>             <strong class="jxr_keyword">for</strong> ( <strong class="jxr_keyword">int</strong> j = 0; j &lt; token.length(); j++ )
<a class="jxr_linenumber" name="245" href="#245">245</a>             {
<a class="jxr_linenumber" name="246" href="#246">246</a>                 <strong class="jxr_keyword">char</strong> c = token.charAt( j );
<a class="jxr_linenumber" name="247" href="#247">247</a>                 <strong class="jxr_keyword">if</strong> ( c == '\t' )
<a class="jxr_linenumber" name="248" href="#248">248</a>                 {
<a class="jxr_linenumber" name="249" href="#249">249</a>                     buf.append( repeat( <span class="jxr_string">" "</span>, indentSize - buf.length() % indentSize ) );
<a class="jxr_linenumber" name="250" href="#250">250</a>                 }
<a class="jxr_linenumber" name="251" href="#251">251</a>                 <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> ( c == '\u00A0' )
<a class="jxr_linenumber" name="252" href="#252">252</a>                 {
<a class="jxr_linenumber" name="253" href="#253">253</a>                     buf.append( ' ' );
<a class="jxr_linenumber" name="254" href="#254">254</a>                 }
<a class="jxr_linenumber" name="255" href="#255">255</a>                 <strong class="jxr_keyword">else</strong>
<a class="jxr_linenumber" name="256" href="#256">256</a>                 {
<a class="jxr_linenumber" name="257" href="#257">257</a>                     buf.append( c );
<a class="jxr_linenumber" name="258" href="#258">258</a>                 }
<a class="jxr_linenumber" name="259" href="#259">259</a>             }
<a class="jxr_linenumber" name="260" href="#260">260</a>         }
<a class="jxr_linenumber" name="261" href="#261">261</a>         lines.add( buf.toString() );
<a class="jxr_linenumber" name="262" href="#262">262</a>     }
<a class="jxr_linenumber" name="263" href="#263">263</a> 
<a class="jxr_linenumber" name="264" href="#264">264</a>     <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> </em>
<a class="jxr_linenumber" name="265" href="#265">265</a> <em class="jxr_javadoccomment">     * Gets the indentation level of the specified line.</em>
<a class="jxr_linenumber" name="266" href="#266">266</a> <em class="jxr_javadoccomment">     * </em>
<a class="jxr_linenumber" name="267" href="#267">267</a> <em class="jxr_javadoccomment">     * @param line The line whose indentation level should be retrieved, must not be &lt;code&gt;null&lt;/code&gt;.</em>
<a class="jxr_linenumber" name="268" href="#268">268</a> <em class="jxr_javadoccomment">     * @return The indentation level of the line.</em>
<a class="jxr_linenumber" name="269" href="#269">269</a> <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="270" href="#270">270</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">int</strong> getIndentLevel( String line )
<a class="jxr_linenumber" name="271" href="#271">271</a>     {
<a class="jxr_linenumber" name="272" href="#272">272</a>         <strong class="jxr_keyword">int</strong> level = 0;
<a class="jxr_linenumber" name="273" href="#273">273</a>         <strong class="jxr_keyword">for</strong> ( <strong class="jxr_keyword">int</strong> i = 0; i &lt; line.length() &amp;&amp; line.charAt( i ) == '\t'; i++ )
<a class="jxr_linenumber" name="274" href="#274">274</a>         {
<a class="jxr_linenumber" name="275" href="#275">275</a>             level++;
<a class="jxr_linenumber" name="276" href="#276">276</a>         }
<a class="jxr_linenumber" name="277" href="#277">277</a>         <strong class="jxr_keyword">for</strong> ( <strong class="jxr_keyword">int</strong> i = level + 1; i &lt;= level + 4 &amp;&amp; i &lt; line.length(); i++ )
<a class="jxr_linenumber" name="278" href="#278">278</a>         {
<a class="jxr_linenumber" name="279" href="#279">279</a>             <strong class="jxr_keyword">if</strong> ( line.charAt( i ) == '\t' )
<a class="jxr_linenumber" name="280" href="#280">280</a>             {
<a class="jxr_linenumber" name="281" href="#281">281</a>                 level++;
<a class="jxr_linenumber" name="282" href="#282">282</a>                 <strong class="jxr_keyword">break</strong>;
<a class="jxr_linenumber" name="283" href="#283">283</a>             }
<a class="jxr_linenumber" name="284" href="#284">284</a>         }
<a class="jxr_linenumber" name="285" href="#285">285</a>         <strong class="jxr_keyword">return</strong> level;
<a class="jxr_linenumber" name="286" href="#286">286</a>     }
<a class="jxr_linenumber" name="287" href="#287">287</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

